<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组常用的方法 </title>
</head>
<body>
    <script>
        // 数组是一个对象
        // 对象有静态属性 和动态的方法 
        // 对象.属性名
        // 对象.方法名()

        // push() 添加数据  返回值 是添加数据之后 新数组的长度
        // pop() 删除数据 返回值 是删除的数组的最后的那一个数据
        // 栈方法   电梯 先进后出

        // 上面两个操作的是数组的结尾
        // 下面两个操作的是数组的开头  
    

        // unshift() 添加数据 返回值 是添加数据之后 新数组的长度
        // shift()删除数据 返回值 是删除的数组的第一个数据
        // 队列方法 先进先出  管道 

        // var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天']

        // alert(test.push('貂蝉')) 8

        // alert(test);// ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天','貂蝉']

        // alert(test.pop()) //删除数组的最后一个数据 武则天
        // alert(test) ['李白','安琪拉','猪八戒','韩信','李信','小乔']

        // alert(test.unshift('亚索')) // 返回的也是新数组的长度
        // alert(test) //亚索,李白,安琪拉,猪八戒,韩信,李信,小乔,武则天

        // alert(test.shift('猪八戒')) //李白 虽然指定猪八戒 但是还是删除数组的第一个元素
        // alert(test) //安琪拉,猪八戒,韩信,李信,小乔,武则天

        // var num6 = []; 

        // 0    (0+1)*2
        // 1    (1+1)*2
        // 2    (2+1)*2 
        // 3   (3+1)*2 
        // 4    (4+1)*2 

        // for(var i=0;i<30;i++){ // i 0~29  
        //    num6.push((i+1)*2)
        // }
        // alert(num6)
        // alert(num6.length)



        // var test = [19,20,50,67,97]

        // // var box = test;

        // var box = [];
        // for(var i=0;i<test.length;i++){
        //     box.push(test[i])
        // }
        // alert(box);//[19,20,50,67,97]

        // box[3]= 66;
        // alert(test);//[19,20,50,67,97]
        // alert(box);[19,20,50,66,97]


        // reverse() 
        // var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天']
        // test.reverse()
        // alert(test) //武则天,小乔,李信,韩信,猪八戒,安琪拉,李白
        // // 不是降序 仅仅是 反转  

        // sort() 按照每个数据 一位一位的对比 排序 
        //sort(function(a,b){return a-b})
        // var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天']
        // var test = [119,20,5,67,27,48]
        // function haha(num1,num2){
        //     if(num1>num2){
        //         return -5; // 如果小于0 不交换位置
        //     }
        //     return 5; // 大于0 交换位置 
        // }
        // test.sort(haha) //因为 sort即可以排序数字 又可以排序字母
        // // 导致 直接排序数字 或者直接排序字母 有可能不正确的情况 
        // // 需要手动干预  
        // // 需要传一个方法 函数进去  传函数名进去 不要() 

        // alert(test)

        // 默认是排序纯字母 

        // var test = ['g','a','r','p','x','o']
        // test.sort()
        // alert(test)
        // sort 不要排序数字  非要排序数字  那么需要干预一下 写个

        // splice() // 专门用来截取数组 
        //返回的是截取的数据 不管增删改都是返回截取的数据 
        // 如果实现数组的增 splice(开始的位置,0) 那么返回的结果是空白 
        //原数组发生了改变 

        //一个方法完成了数组的增删改 
        //数组.splice(开始的索引位置,0,新元素1,...新元素n) 增
        //数组.splice(开始的索引位置,删除的个数) 删 
        //数组.splice(开始的索引位置,删除的个数,替换的元素1,...元素n) 改 


        // 数组.splice(开始的索引,截取多少个)

        var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天']

        // var res = test.splice(2,2) // 删除
        // alert(test) //李白,安琪拉,李信,小乔,武则天 原数组发生了变化
        // alert(res) //猪八戒,韩信 
        
        // alert(test.splice(2,2,'李青','格雷福斯') )//替换
        alert(test.splice(2,0,'李青','格雷福斯'))// 增加

        // alert(test)


        // push pop  unshift shift reverse sort splice
        // 原数组的值都会发生改变     

    </script>
    
</body>
</html>